package com.study2.demoShuangLieJiHe;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class A02_MapBianLi {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("1", "张三");
        map.put("2", "李四");
        map.put("3", "王五");
        
        /*
        // 通过键找值
        Set<String> keys = map.keySet();
        for (String key : keys) {
            // 利用map集合的键获取值  get
            System.out.println(key + "--->" + map.get(key));
        }*/
        
        /*
         * 键值对遍历方式
         * */
        // 通过一个方法获取所有的键值对对象，返回一个set集合
        /*Set<Map.Entry<String, String>> entries = map.entrySet();
        // 遍历entries 获取里面的每一个键值对
        for (Map.Entry<String, String> entry : entries) {
            // 用entries调用get方法获取键和值
            System.out.println(entry.getKey() + "--->" + entry.getValue());
        }*/
        
        
        /*
         * lambda表达式
         * */
        map.forEach((k, v) -> System.out.println(k + "--->" + v));
        
        
        
        
        
        
        
        
        
        
        
        
        /*
         * 练习
         *       1.利用键找值的方式遍历map集合，要求：装着键的单列结合使用for的形式遍历
         *
         *       2.利用键找值的方式遍历map集合，要求：装着键的单列结合使用迭代器的形式遍历
         *
         *       3.利用键找值的方式遍历map集合，要求：装着键的单列结合使用lambda
         * *//*
        
        // 1.创建map集合
        Map<String,String> map = new HashMap<>();
        map.put("1","张三");
        map.put("2","李四");
        map.put("3","王五");
        
        // 1.利用键找值的方式遍历map集合，要求：装着键的单列结合使用for的形式遍历
        Set<String> keys = map.keySet();
        for (String key : keys) {
            System.out.println(key + "--->" + map.get(key));
        }
        System.out.println("--------------------------");
        Iterator<String> it = keys.iterator();
        while (it.hasNext()){
            String i = it.next();
            System.out.println(i + "--->" + map.get(i));
        }
        System.out.println("--------------------------");
        
        // 3.利用键找值的方式遍历map集合，要求：装着键的单列结合使用lambda
        keys.forEach(key->System.out.println(key + "--->" + map.get(key)));*/
        
        
        /*
         * 联系
         *       1.通过键值对对象进行遍历map集合  要求：装着键值对对象的单列合计使用增强for进行遍历
         *       2.通过键值对对象进行遍历map集合  要求：装着键值对对象的单列合计使用迭代器
         *       3.通过键值对对象进行遍历map集合  要求：装着键值对对象的单列合计使用lambda
         * *//*
        Set<Map.Entry<String, String>> entries = map.entrySet();
        for (Map.Entry<String, String> entry : entries) {
            System.out.println(entry.getKey() + "--->" + entry.getValue());
        }
        System.out.println("--------------------------");
        Iterator<Map.Entry<String, String>> iterator = entries.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, String> s = iterator.next();
            System.out.println(s.getKey() + "--->" + s.getValue());
        }
        System.out.println("--------------------------");
        entries.forEach(e-> System.out.println(e.getKey() + "--->" + e.getValue()));*/
    }
}
